This invention relates generally to computer systems, and more particularly, to storage of system configuration information used in computer systems.
The use of computers, especially personal computers (PCs), is widespread. The computing power of the PC, whether coupled to a network or operating as a stand-alone device, has increased significantly as new computer designs move into production. Central processing units have become faster and more complex with each new generation of PC. Memory chips have increased in both capacity and speed. A wide variety of input/output (I/O) devices with various performance capabilities may be included in a PC. Examples of I/O devices include keyboards, pointing devices, scanners, disk drives, CD-ROM drives, printers, display monitors, local area network (LAN) adapters, FAX/modem boards, sound boards, etc. I/O devices are produced by many different manufacturers and come in various models with varying operational characteristics. The number of distinct combinations of components in a PC is very large.
In order for the components of a PC to function together properly and optimally, computer system configuration information is provided to a microprocessor during the power-on self-test (POST) and system initialization routines executed when a PC is first powered-up or reset. The system configuration information is used by the microprocessor to initialize the various components of the PC. Device registers are set, device parameters are loaded, interrupt vectors are created, etc. Computer operating system and/or other system management software is then configured in accordance with the system configuration information.
Because of the wide variety of system components available in today""s PCs, a battery-powered complementary metal oxide semiconductor (CMOS) random access memory (RAM) is included to retain the computer system configuration information when the PC is powered-down. Typically, the CMOS RAM is part of the computer system""s real-time clock and calendar chip. In the event the system configuration information stored in the CMOS RAM is lost, certain configuration default values are provided by the read-only memory (ROM) basic input/output service (BIOS) chip. However, unlike configuration information stored in the CMOS RAM, these default values are not customized to the particular configuration of the PC. The PC then functions poorly, and a user must reprogram the configuration CMOS RAM. Properly reprogramming the CMOS RAM with the lost system configuration parameters can be difficult, especially for individuals with little or no technical background.
Manufacturers have attempted to overcome the problems associated with lost computer system configuration information by providing highly reliable batteries to power the volatile CMOS RAM. Additionally, certain components, such as peripheral add-ins with plug-and-play capability, include a non-volatile ROM memory for storing that particular component""s configuration parameters. However, it can be appreciated that there is a significant need for an improved method and apparatus for storage of computer system configuration information.
The present invention is embodied in a method and apparatus for improved storage of computer system configuration information. A computer system includes a ROM module having a BIOS ROM portion and a configuration ROM portion. The system also includes a battery-powered configuration CMOS RAM for storing system configuration parameters required to initialize various computer system components. The configuration ROM includes a backup copy of the system configuration parameters. If the configuration CMOS RAM fails to provide valid configuration data, the contents of the configuration ROM are then used to configure and initialize the computer system. Basic system default configuration values are provided by the BIOS ROM only in the event the contents of the configuration ROM are also invalid. A user may then modify the system configuration default values and reprogram the configuration ROM accordingly.
In one embodiment, a computer system includes a first non-volatile memory for storing system start-up routines executable by a microprocessor. A second non-volatile memory stores system configuration parameters, each corresponding with one of a plurality of selected system components. The first and second non-volatile memories may be first and second reserved portions of a single non-volatile memory. The microprocessor executes the system start-up routines to initialize each of the system components according to the system configuration parameters.
In a second embodiment, a computer system includes a microprocessor, a plurality of I/O devices coupled with the microprocessor, and a configuration data storage system. The configuration data storage system includes a volatile memory for storing a plurality of custom configuration data, which the microprocessor uses to initialize each of the I/O devices. The configuration data storage system also includes first and second non-volatile memories. The first non-volatile memory stores a back-up copy of the custom configuration data, and the microprocessor copies this back-up copy into the volatile memory in the event the data stored in the volatile memory is corrupted. The second non-volatile memory stores default configuration data, and the microprocessor initializes each of the I/O devices according to the default configuration data in the event that both the data stored in the volatile memory and in the first non-volatile memory are corrupted.
A method of operating a computer system includes programming a first non-volatile memory with a set of system initialization routines executable by a microprocessor. The first non-volatile memory is also programmed with a set of basic system configuration default parameters. A second non-volatile memory is programmed with a plurality of customized computer configuration parameters corresponding with selected computer system components. The customized computer configuration parameters are tested for errors. If an error is indicated, the system initialization routines are executed to initialize each of the selected computer system components in accordance with the default parameters. If, however, no error is indicated, the system initialization routines are executed to initialize each of the computer system components in accordance with the customized computer configuration parameters.
A method is provided for configuring a computer system which includes a processor coupled with a non-volatile memory, a volatile memory, and a plurality of I/O devices. Both default system configuration data and customized system configuration data are stored in the non-volatile memory. The customized system configuration data is also stored in the volatile memory. A first validity status is checked for the customized system configuration data stored in the volatile memory. If this first status is valid, each of the I/O devices is initialized in accordance with the data stored in the volatile memory. If the first status is invalid, a second validity status is checked for the customized system configuration data stored in the non-volatile memory. If this second status is valid, the customized system configuration data stored in the non-volatile memory is copied into the volatile memory.